#include <iostream>
#include "list.h"
using namespace single_list;
template<typename T>
void test_insert_node(list<T>& list1) {
    list1.insertNode(1);
    list1.insertNode(22);
    list1.insertNode(2);
    list1.insertNode(22);
};

template<typename T>
void test_head_insert_node(list<T>& list1) {
    list1.headInsertNode(8);
    list1.headInsertNode(7);
    list1.headInsertNode(9);
    list1.headInsertNode(22);
    list1.headInsertNode(22);
    list1.headInsertNode(22);
    list1.headInsertNode(22);
    list1.headInsertNode(22);
    list1.headInsertNode(22);
};
#if 0
int main() {
    list<int> list1;
    test_insert_node(list1);
    list1.show();
    test_head_insert_node(list1);
    list1.show();
    list1.deleteNode(22);
    list1.show();
    // list1.deleteAllNode(22);
    list1.show();
    const Node<int>* cur = list1.selectNode(8);
    if (cur!=nullptr) {
        std::cout<<cur->data<<std::endl;
    }else {
        std::cout<<"没有这个元素"<<std::endl;
    }
    // reverseList(list1);

    list<int>::iterator it = list1.begin();
    while (it!=list1.end()) {
        std::cout<<*it<<"   ";
        ++it;
    }
    std::cout<<std::endl;
    selectKNode(list1,7);
    showNumber(list1);
    return 0;
}
# endif
#if 0
int main() {
    list<int> list1;
    list1.insertNode(1);
    list1.insertNode(8);
    list1.insertNode(10);
    list1.insertNode(12);
    list1.insertNode(19);
    list1.insertNode(21);
    list<int> list2;
    list2.insertNode(2);
    list2.insertNode(4);
    list2.insertNode(5);
    list2.insertNode(9);
    list2.insertNode(11);

    mergeTwoList(list1,list2);
    list1.show();
    selectKNode(list1,0);

    return 0;
}
#endif

#if 0
int main() {
    list<int> list1;
    list1.insertNode(1);
    list1.insertNode(8);
    list1.insertNode(10);
    list1.insertNode(12);
    list1.insertNode(19);
    list1.insertNode(21);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
    list1.insertNode(22);
}
#endif
#if 0
int main() {
    Node<int> head;
    Node<int> n1(10),n2(20),n3(30),n4(40),n5(50);
    head._next = &n1;
    n1._next = &n2;
    n2._next = &n3;
    n3._next = &n4;
    n4._next = &n5;
    n5._next = &n3;
    isExistCircle(&head);

}
#endif
#if 0
int main() {
    Node<int> head,head2;
    Node<int> n1(10),n2(20),n3(30),n4(40),n5(50),n6(60);
    head._next = &n1;
    n1._next = &n2;
    n2._next = &n3;
    n3._next = &n4;
    n4._next = &n5;
    n5._next = &n6;

    head2._next= &n6;
    // n6._next = &n6;
    isIntersect(&head,&head2);

}
#endif

int main() {
    list<int> list;
    list.insertNode(1);
    list.insertNode(2);
    list.insertNode(3);
    list.insertNode(4);
    list.insertNode(5);
    list.insertNode(6);
    list.insertNode(7);
    list.insertNode(8);
    list.insertNode(9);
    list.insertNode(10);
    list.insertNode(11);
    list.show();
    // deleteKNode(list,11);
    list.rotateList(list,25);
    list.show();
    return 0;
}